package com.hundsun.cprs.yyt.service.order.service;

import com.hundsun.cprs.yyt.service.common.dto.UserAccountDTO;
import com.hundsun.cprs.yyt.service.order.domain.query.OrderInfoQuery;
import com.hundsun.cprs.yyt.service.order.domain.query.OrderQuery;
import com.hundsun.cprs.yyt.service.order.dto.DeliveryMethod;
import com.hundsun.cprs.yyt.service.order.dto.GoodsItem;
import com.hundsun.cprs.yyt.service.order.dto.OrderInfo;

public interface OrderService {

    /**
     * 下单支付
     *
     * @param user    会员信息
     * @param item    商品信息
     * @param reciver 收货人地址信息
     * @param memo    备注
     */
    OrderInfo createOrder(UserAccountDTO user, GoodsItem item, DeliveryMethod deliveryMethod, String memo);


    /**
     * 订单分页查询
     *
     * @param query
     */
    void selectByPage(OrderQuery query);

    /**
     * 订单详情分页查询
     *
     * @param query
     */
    void selectOrderInfoByPage(OrderInfoQuery query);

    /**
     * 订单详情分页查询(嵌套查询方式)
     *
     * @param query
     */
    void selectOrderInfoByPageExt(OrderInfoQuery query);

    /**
     * 更新订单信息
     *
     * @param order
     */
    void updateOrder(OrderInfo order);

    /**
     * 查询订单详情
     *
     * @param
     */
    OrderInfo selectOrderInfoById(Long orderId);

    /**
     * 更新订单状态
     *
     * @param
     */
    void updateOrderStatus(OrderInfo orderInfo);

    /**
     * 根据订单编号查询订单详情
     *
     * @param orderSn
     */
    OrderInfo selectOrderInfoByOrderSn(String orderSn);

    /**
     * 删除订单
     *
     * @param orderId
     */
    void delete(Long orderId);
}
